package cn.com.godliu.oauth2.config.jwt;

import org.springframework.security.oauth2.common.*;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import org.springframework.security.oauth2.provider.token.TokenEnhancer;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class Jwt_TokenEnhancer implements TokenEnhancer {

    @Override
    public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
        Map<String, Object> info = new HashMap<>();
        info.put("additional", "附件信息");
        //设置一些额外的附件信息
        ((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(info);
        //设置token有效期,可以覆盖DefaultTokenServices里设置的token有效期--2小时
        ((DefaultOAuth2AccessToken) accessToken).setExpiration(new Date(System.currentTimeMillis() + 2 * 3600 * 1000));
        //设置刷新token的过期时间--30天
        DefaultExpiringOAuth2RefreshToken defaultExpiringOAuth2RefreshToken = new DefaultExpiringOAuth2RefreshToken(accessToken.getRefreshToken().getValue(), new Date(System.currentTimeMillis() + 30L * 24 * 3600 * 1000));
        ((DefaultOAuth2AccessToken) accessToken).setRefreshToken(defaultExpiringOAuth2RefreshToken);
        return accessToken;
    }
}
